package com.example.aigc_education.mapper;

import com.example.aigc_education.domain.Note;
import com.example.aigc_education.domain.NoteTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.aigc_education.domain.request.AddNoteTagRequest;
import com.example.aigc_education.domain.vo.NoteTagVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * NoteTag的Mapper接口
 */
@Mapper
public interface NoteTagMapper extends BaseMapper<NoteTag> {

    /**
     * 根据用户id和标签名查询笔记
     * @param userId 用户id
     * @param tagName 标签名
     * @return 笔记集合
     */
    List<Note> selectNotesByUserIdAndTagName(@Param("userId") Long userId, @Param("tagName") String tagName);


    /**
     * 根据笔记id查询标签名集合
     * @param noteId 笔记id
     * @return 标签名集合
     */
    List<String> selectTagsByNoteId(@Param(("noteId")) Long noteId);

    /**
     * 插入笔记和标签的关联关系
     * @param noteTag 笔记和标签的关联关系
     */
    void insertNoteTag(AddNoteTagRequest noteTag);

    /**
     * 删除笔记标签
     * @param noteId    笔记id
     * @param tagName   标签名字
     */
    void deleteNoteTag(@Param("noteId") Long noteId, @Param("tagName") String tagName);

    /**
     * 通过 noteId 搜索笔记中的tag标签
     * @param noteId
     * @return
     */
    List<String> selectTagsInNoteByNoteId(@Param("noteId") Long noteId);

    /**
     * 删除note和tag关联关系
     * @param noteId    笔记id
     */
    void deleteNoteAndTagByNoteId(@Param("noteId") Long noteId);
}